package com.insight.dto.graph;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 关系图边DTO
 * 表示表之间的外键关系
 *
 * @author Insight Team
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GraphEdge {

    /**
     * 源表ID(子表,包含外键的表)
     */
    private Long sourceTableId;

    /**
     * 源表名称
     */
    private String sourceTableName;

    /**
     * 目标表ID(父表,被引用的表)
     */
    private Long targetTableId;

    /**
     * 目标表名称
     */
    private String targetTableName;

    /**
     * 外键约束名称
     */
    private String constraintName;

    /**
     * 源表的外键列(多列用逗号分隔)
     */
    private String sourceColumn;

    /**
     * 目标表的主键列(多列用逗号分隔)
     */
    private String targetColumn;

    /**
     * 关系类型(FOREIGN_KEY, UNIQUE)
     */
    private String relationType;

    /**
     * ON DELETE规则(CASCADE, RESTRICT, NO ACTION)
     */
    private String onDeleteRule;

    /**
     * ON UPDATE规则(CASCADE, RESTRICT, NO ACTION)
     */
    private String onUpdateRule;

    /**
     * 关系描述(业务语义)
     */
    private String description;
}
